package com.hospital.register.user.service;

import com.hospital.register.dto.user.PatientQueryDto;
import com.hospital.register.model.user.Patient;
import com.hospital.register.vo.user.PatientQueryVo;

import java.util.List;

/**
 * 处理就诊人相关业务
 *
 * @author 刘逸晖
 */
public interface PatientService {

    /**
     * 根据条件查询就诊人列表
     * 用户 id 必填
     *
     * @param conditions 条件
     * @return 就诊人列表
     */
    List<PatientQueryVo> selectList(PatientQueryDto conditions);

    /**
     * 新增就诊人
     *
     * @param patient 预新增的就诊人信息
     * @return 是否新增成功
     */
    boolean insert(Patient patient);

    /**
     * 根据 id 查询就诊人
     *
     * @param id     id
     * @param userId 所属用户的 id
     * @return 就诊人信息
     */
    PatientQueryVo selectMineById(Long id, Long userId);

    /**
     * 根据 id 查询就诊人
     *
     * @param id id
     * @return 就诊人信息
     */
    PatientQueryVo selectById(Long id);

    /**
     * 更新就诊人
     *
     * @param patient 就诊人
     * @return 是否成功
     */
    boolean update(Patient patient);

    /**
     * 根据 id 删除就诊人
     *
     * @param id     id
     * @param userId 所属用户的 id
     * @return 是否删除成功
     */
    boolean deleteById(Long id, Long userId);

}
